/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Servlets;

import java.io.*;
import java.net.*;

import javax.servlet.*;
import javax.servlet.http.*;

import com.akcess.exception.*;
import java.io.*;
import java.net.*;
import com.akcess.vo.*;
import manejadores.*;
import java.sql.*;

/**
 *
 * @author Alejandro
 */
public class GestionarSolicitudes_de_Reserva extends HttpServlet {

    private static final String dirBASE = "jsp/SolicitudReserva";

    /** 
     * Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods.
     * @param request servlet request
     * @param response servlet response
     */
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/xml charset=UTF-8");
        PrintWriter out = response.getWriter();
        boolean error = false;

        String tipoRecurso = request.getParameter("tipoRecurso");
        if (tipoRecurso == null) {
            error = true;
            int idTipo = Integer.parseInt(tipoRecurso);
            try {
                HttpSession session = request.getSession(false);

                if (session != null) {
                    Connection cone;
                    cone = (Connection) session.getAttribute("conexion");

                    if (cone != null) {
                        ManejadorSolicitudReserva manejadorSol = new ManejadorSolicitudReserva(cone);

                    }
                }
            } catch (Exception ex) {
                ex.printStackTrace();
            }
        }

        if (error == false) {

            out.println("<respuesta>ok</respuesta>");
        } else {
            out.println("<respuesta>error</respuesta>");
        }

        out.close();


    }

    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
    /** 
     * Handles the HTTP <code>GET</code> method.
     * @param request servlet request
     * @param response servlet response
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        this.doPost(request, response);
    }

    /** 
     * Handles the HTTP <code>POST</code> method.
     * @param request servlet request
     * @param response servlet response
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        String accion = request.getParameter("hacer");
        request.setAttribute("modulo", "Solicitudes de Reserva");
        try {
            if (accion.equals("Listar")) {
                RequestDispatcher dispatcher = request.getRequestDispatcher(this.dirBASE + "/ListarSolicitudReserva.jsp");
                dispatcher.forward(request, response);
            }
            if (accion.equals("Listar_Mis")) {
                RequestDispatcher dispatcher = request.getRequestDispatcher(this.dirBASE + "/ListarMisReservas.jsp");
                dispatcher.forward(request, response);
            }
            if (accion.equals("Agregar")) {
                RequestDispatcher dispatcher = request.getRequestDispatcher(this.dirBASE + "/AgregarSolicitudReserva.jsp");
                dispatcher.forward(request, response);
            }
            if (accion.equals("opVer")) {
                RequestDispatcher dispatcher = request.getRequestDispatcher(this.dirBASE + "/VerSolicitudReserva.jsp");
                dispatcher.forward(request, response);
            }

            if (accion.equals("crear")) {
                this.CrearSolicitudReserva(request, response);
                RequestDispatcher dispatcher = request.getRequestDispatcher(this.dirBASE + "/ListarSolicitudReserva.jsp");
                dispatcher.forward(request, response);
            }

            if (accion.equals("Aprobar")) {
                RequestDispatcher dispatcher = request.getRequestDispatcher(this.dirBASE + "/ListarAprobarReserva.jsp");
                dispatcher.forward(request, response);
            }
            if (accion.equals("Rechazar")) {
                RequestDispatcher dispatcher = request.getRequestDispatcher(this.dirBASE + "/ListarRechazarReserva.jsp");
                dispatcher.forward(request, response);
            }
            if (accion.equals("Anular")) {
                RequestDispatcher dispatcher = request.getRequestDispatcher(this.dirBASE + "/ListarAnularReserva.jsp");
                dispatcher.forward(request, response);
            }
            if (accion.equals("opAnular")) {
                if (this.AnularSolicitud(request, response)) {
                    request.setAttribute("Mensaje", "La Solicitud a nombre de " + request.getParameter("NombreSolicitante") + " fue anulada exitosamente...");
                    RequestDispatcher dispatcher = request.getRequestDispatcher(this.dirBASE + "/ListarAnularReserva.jsp");
                    dispatcher.forward(request, response);
                } else {
                    request.setAttribute("Mensaje", "La Solicitud a nombre de " + request.getParameter("NombreSolicitante") + " no pudo ser anulada...");
                    RequestDispatcher dispatcher = request.getRequestDispatcher(this.dirBASE + "/ListarAnularReserva.jsp");
                    dispatcher.forward(request, response);
                }
            }
            if (accion.equals("opAprobar")) {
                RequestDispatcher dispatcher = request.getRequestDispatcher(this.dirBASE + "/AprobarSolicitudReserva.jsp");
                dispatcher.forward(request, response);
            }
            if (accion.equals("aprobado")) {
                String mensaje = this.AprobarSolicitud(request, response);
                if (mensaje != null) {
                    request.setAttribute("Error", mensaje);
                    RequestDispatcher dispatcher = request.getRequestDispatcher(this.dirBASE + "/ListarAprobarReserva.jsp");
                    dispatcher.forward(request, response);
                } else {
                    request.setAttribute("Error", "Algo no anda...");
                    RequestDispatcher dispatcher = request.getRequestDispatcher(this.dirBASE + "/ListarAprobarReserva.jsp");
                    dispatcher.forward(request, response);
                }
            }
            if (accion.equals("opRechazar")) {
                if (this.RechazarSolicitud(request, response)) {
                    request.setAttribute("Mensaje", "La Solicitud a nombre de " + request.getParameter("NombreSolicitante") + " fue rechazada exitosamente...");
                    RequestDispatcher dispatcher = request.getRequestDispatcher(this.dirBASE + "/ListarRechazarReserva.jsp");
                    dispatcher.forward(request, response);
                } else {
                    request.setAttribute("Mensaje", "La Solicitud a nombre de " + request.getParameter("NombreSolicitante") + " no pudo ser rechazada...");
                    RequestDispatcher dispatcher = request.getRequestDispatcher(this.dirBASE + "/ListarRechazarReserva.jsp");
                    dispatcher.forward(request, response);
                }
            }
            //Para listar las reservas con la opcion de Verlas.
            if (accion.equals("ListarSolicitudes")) {
                String tipo = request.getParameter("id");
                String res = "";
                String link = "Ver";
                String operacion = "opVer";
                if (tipo != null && tipo.equals("Aula")) {
                    operacion = operacion + "&tipo=Aula";
                    res = this.ListarSolicitudes(request, response, "Aula", link, operacion);
                } else if (tipo != null && tipo.equals("Sala")) {
                    operacion = operacion + "&tipo=Sala";
                    res = this.ListarSolicitudes(request, response, "SM", link, operacion);
                } else if (tipo != null && !(tipo.equals("Sala")) && !(tipo.equals("Aula"))) {
                    operacion = operacion + "&tipo=RM&tipoRM=" + tipo;
                    res = this.ListarSolicitudes(request, response, "RM", link, operacion);
                }

                response.setContentType("text/html;charset=UTF-8");
                PrintWriter out = response.getWriter();
                try {
                    out.print(res);

                } finally {
                    out.close();
                }
            }

            //Para listar las reservas con la opcion de Aprobarlas.
            if (accion.equals("AprobarSolicitudes")) {
                String tipo = request.getParameter("id");
                String res = "";
                String link = "Aprobar";
                String operacion = "opAprobar";
                if (tipo != null && tipo.equals("Aula")) {
                    operacion = operacion + "&tipo=Aula";
                    res = this.ListarSolicitudes(request, response, "Aula", link, operacion);
                } else if (tipo != null && tipo.equals("Sala")) {
                    operacion = operacion + "&tipo=Sala";
                    res = this.ListarSolicitudes(request, response, "SM", link, operacion);
                } else if (tipo != null && !(tipo.equals("Sala")) && !(tipo.equals("Aula"))) {
                    operacion = operacion + "&tipo=RM&tipoRM=" + tipo;
                    res = this.ListarSolicitudes(request, response, "RM", link, operacion);
                }
                response.setContentType("text/html;charset=UTF-8");
                PrintWriter out = response.getWriter();
                try {
                    out.print(res);

                } finally {
                    out.close();
                }
            }

            //Para listar las reservas con la opcion de Rechazarlas.
            if (accion.equals("RechazarSolicitudes")) {
                String tipo = request.getParameter("id");
                String res = "";
                String link = "Rechazar";
                String operacion = "opRechazar";
                if (tipo != null && tipo.equals("Aula")) {
                    operacion = operacion + "&tipo=Aula";
                    res = this.ListarSolicitudes(request, response, "Aula", link, operacion);
                } else if (tipo != null && tipo.equals("Sala")) {
                    operacion = operacion + "&tipo=Sala";
                    res = this.ListarSolicitudes(request, response, "SM", link, operacion);
                } else if (tipo != null && !(tipo.equals("Sala")) && !(tipo.equals("Aula"))) {
                    operacion = operacion + "&tipo=RM&tipoRM=" + tipo;
                    res = this.ListarSolicitudes(request, response, "RM", link, operacion);
                }
                response.setContentType("text/html;charset=UTF-8");
                PrintWriter out = response.getWriter();
                try {
                    out.print(res);

                } finally {
                    out.close();
                }
            }

            //Para listar las reservas con la opcion de Anularlas.
            if (accion.equals("AnularSolicitudes")) {
                String tipo = request.getParameter("id");
                String res = "";
                String link = "Anular";
                String operacion = "opAnular";
                if (tipo != null && tipo.equals("Aula")) {
                    operacion = operacion + "&tipo=Aula";
                    res = this.ListarSolicitudes(request, response, "Aula", link, operacion);
                } else if (tipo != null && tipo.equals("Sala")) {
                    operacion = operacion + "&tipo=Sala";
                    res = this.ListarSolicitudes(request, response, "SM", link, operacion);
                } else if (tipo != null && !(tipo.equals("Sala")) && !(tipo.equals("Aula"))) {
                    operacion = operacion + "&tipo=RM&tipoRM=" + tipo;
                    res = this.ListarSolicitudes(request, response, "RM", link, operacion);
                }
                response.setContentType("text/html;charset=UTF-8");
                PrintWriter out = response.getWriter();
                try {
                    out.print(res);

                } finally {
                    out.close();
                }
            }
        } catch (Exception ex) {
            try {
                GestionarUsuarios.sendErrorRedirect(request, response, "jsp/errores/errorGenerico.jsp", ex);
            } catch (Exception e) {
                e.printStackTrace();
            }

        }
        //Para listar las solicitudes reservas de un usuario con la opcion de verlas.
        if (accion.equals("ListarMis")) {
            String tipo = request.getParameter("id");
            String res = "";
            String link = "Ver";
            String operacion = "opVer";
            if (tipo != null && tipo.equals("Aula")) {
                operacion = operacion + "&tipo=Aula";
                res = this.ListarSolicitudes(request, response, "Aula", link, operacion);
            } else if (tipo != null && tipo.equals("Sala")) {
                operacion = operacion + "&tipo=Sala";
                res = this.ListarSolicitudes(request, response, "SM", link, operacion);
            } else if (tipo != null && !(tipo.equals("Sala")) && !(tipo.equals("Aula"))) {
                operacion = operacion + "&tipo=RM&tipoRM=" + tipo;
                res = this.ListarSolicitudes(request, response, "RM", link, operacion);
            }
            response.setContentType("text/html;charset=UTF-8");
            PrintWriter out = response.getWriter();
            try {
                out.print(res);

            } finally {
                out.close();
            }
        }

    }

    /** 
     * Returns a short description of the servlet.
     */
    public String getServletInfo() {
        return "Short description";
    }// </editor-fold>

    protected String AprobarSolicitud(HttpServletRequest request, HttpServletResponse response) throws Solicitud_registroException, UsuariosException, Usuario_tiene_rolException, Exception {
        HttpSession session = request.getSession(false);
        int idSol = Integer.parseInt(request.getParameter("idSolicitud"));

        Connection cone = (Connection) session.getAttribute("conexion");

        String mensaje = GestionarReservas.AgregarReserva(request, response);
        if (mensaje.contains("EXITO")) {
            Usuarios operador = (Usuarios) session.getAttribute("datosUser");
            ManejadorSolicitudReserva manejarSolReserva = new ManejadorSolicitudReserva(cone);
            manejarSolReserva.AceptarSolicitud(idSol, operador.getId_usuario());
            return mensaje;
        } else {
            return mensaje;
        }
    }

    protected void CrearSolicitudReserva(HttpServletRequest request, HttpServletResponse response) throws Solicitud_registroException, Solicitudes_reservasException {
        HttpSession session = request.getSession(false);
        Connection cone;
        Usuarios solicitante;
        String mensaje = null;
        int idReservador;
        if (session != null) {
            if (session != null) {
                cone = (Connection) session.getAttribute("conexion");
                solicitante = (Usuarios) session.getAttribute("datosUser");
                //Pongo el id del solicitante
                Solicitudes_reservas reservita = new Solicitudes_reservas();
                reservita.setId_solicitante(solicitante.getId_usuario());
                //Pongo la fecha de reserva
                String fecha = request.getParameter("Fecha_Reserva");
                Date fecha_reserva = Date.valueOf(fecha);
                reservita.setFecha_reserva(fecha_reserva);
                //Pongo las hora de inicio y de fin
                String horaInicio = request.getParameter("hHora_de_Inicio") + ":" + request.getParameter("mHora_de_Inicio") + ":00";
                String horaFin = request.getParameter("hHora_de_Fin") + ":" + request.getParameter("mHora_de_Fin") + ":00";
                Time horainicio_asignada = Time.valueOf(horaInicio);
                Time horafin_asignada = Time.valueOf(horaFin);
                reservita.setHora_final(horafin_asignada);
                reservita.setHora_inicio(horainicio_asignada);
                //Pongo la ubicacion si es que existe
                String ubiStr = request.getParameter("Ubicacion");
                //Si lo que hay en Ubicacion es distinto de #, entonces significa que la reserva SI tiene ubicacion.
                if (!ubiStr.equals("#")) {
                    reservita.setId_ubicacion(Integer.parseInt(ubiStr));
                }
                //Pongo los datos del responsable
                reservita.setC_i_responsable(request.getParameter("Num_Doc_Responsable"));
                reservita.setNombre_responsable(request.getParameter("Nombre_Responsable"));
                //Pongo el recurso solicitado
                String idRecurStr = request.getParameter("recurso");
                //Si idRecurStr es igual a #, significa que el tipo solo eligio un tipo de recurso y no un recurso
                if (!idRecurStr.equals("#")) {
                    reservita.setId_recurso(Long.parseLong(request.getParameter("recurso")));
                }
                //Por defecto le pongo el estado 3
                reservita.setId_estado((short) 3);
                ManejadorSolicitudReserva manejarSolReserva = new ManejadorSolicitudReserva(cone);
                manejarSolReserva.CrearSolicitudReserva(reservita);

            }

        }
    }

    /**
     * Este metodo nos permite obtener una tabla en donde se listen las Solicitudes reservas existentes en el sistema. Se presentaran las solicitudes
     * dependiendo de que operacion se quiera realizar sobre ellas.
     * @param request
     * @param response
     * @param tipo No indical el tipo de solicitud que se quieren visualizar, pudiendo ser solicitudes sobre "Aulas", "Sala de Maquinas" o "Recursos Moviles".
     * @param link Define el nombre que tendra el link para cada solicitud de la tabla. Los nombres puedenser: "Ver", "Modificar","Anular","Rechazar" o "Aprobar".
     * @param operacion Este atributo nos permite definir cual operacion sera llevada a cabo en el servlet cuando se pulsa sobre el link.
     * @return Retorna una cadena que contiene la tabla que se visualizara en el cliente.
     */
    protected String ListarSolicitudes(HttpServletRequest request, HttpServletResponse response, String tipo, String link, String operacion) {
        try {
            String respuesta = "";
            boolean band = true;
            HttpSession session = request.getSession(false);
            String accion = request.getParameter("hacer");
            if (session != null) {
                Connection cone;
                cone = (Connection) session.getAttribute("conexion");
                Usuarios user = (Usuarios) session.getAttribute("datosUser");
                if (cone != null) {
                    ManejadorSolicitudReserva manager = new ManejadorSolicitudReserva(cone);
                    SolicitudReservaEstado[] resultado = null;

                    if (tipo != null && tipo.equals("Aula")) {
                        resultado = manager.ObtenerSolicitudesAulas();
                    } else if (tipo != null && tipo.equals("SM")) {
                        resultado = manager.ObtenerSolicitudesSM();
                    } else if (tipo != null && (tipo.equals("RM"))) {
                        int tipoRM = Integer.parseInt(request.getParameter("id"));
                        resultado = manager.ObtenerSolicitudesRM(tipoRM);
                    }

                    if (resultado != null && resultado.length > 0) {
                        respuesta = this.CabeceraTabla();
                        if (link.equals("Ver")) {
                            if (accion != null && accion.equalsIgnoreCase("ListarMis")) {
                                for (int i = 0; i < resultado.length; i++) {
                                    if (user.getId_usuario() == resultado[i].getId_solicitante()) {
                                        band = false;
                                        respuesta = respuesta + "<tr> ";
                                        respuesta = respuesta + "<td>" + resultado[i].getNombreSolicitante() + " " + resultado[i].getApellidoSolicitante() + "</td> ";
                                        respuesta = respuesta + "<td>" + resultado[i].getNombreRecurso() + "</td> ";
                                        respuesta = respuesta + "<td>" + resultado[i].getFecha_reserva().toString() + "</td> ";
                                        respuesta = respuesta + "<td>" + resultado[i].getHora_inicio().toString().substring(0, 5) + "</td> ";
                                        respuesta = respuesta + "<td>" + resultado[i].getHora_final().toString().substring(0, 5) + "</td> ";
                                        respuesta = respuesta + "<td>" + resultado[i].getNombreEstado() + "</td> ";
                                        respuesta = respuesta + "<th class=\"nada\"><a href=\"GestionarSolicitudes_de_Reserva?hacer=" + operacion + "&mis=true" + "&id=" + resultado[i].getId_solic_reserva() + "&NombreSolicitante=" + resultado[i].getNombreSolicitante() + " " + resultado[i].getApellidoSolicitante() + "\">" + link + "</a></th> ";
                                        respuesta = respuesta + "</tr> ";
                                    }
                                }
                            } else {
                                for (int i = 0; i < resultado.length; i++) {
                                    band = false;
                                    respuesta = respuesta + "<tr> ";
                                    respuesta = respuesta + "<td>" + resultado[i].getNombreSolicitante() + " " + resultado[i].getApellidoSolicitante() + "</td> ";
                                    respuesta = respuesta + "<td>" + resultado[i].getNombreRecurso() + "</td> ";
                                    respuesta = respuesta + "<td>" + resultado[i].getFecha_reserva().toString() + "</td> ";
                                    respuesta = respuesta + "<td>" + resultado[i].getHora_inicio().toString().substring(0, 5) + "</td> ";
                                    respuesta = respuesta + "<td>" + resultado[i].getHora_final().toString().substring(0, 5) + "</td> ";
                                    respuesta = respuesta + "<td>" + resultado[i].getNombreEstado() + "</td> ";
                                    respuesta = respuesta + "<th class=\"nada\"><a href=\"GestionarSolicitudes_de_Reserva?hacer=" + operacion + "&id=" + resultado[i].getId_solic_reserva() + "&NombreSolicitante=" + resultado[i].getNombreSolicitante() + " " + resultado[i].getApellidoSolicitante() + "\">" + link + "</a></th> ";
                                    respuesta = respuesta + "</tr> ";
                                }
                            }

                        } else {
                            for (int i = 0; i < resultado.length; i++) {
                                Date fecha = new Date(System.currentTimeMillis());
                                if ((resultado[i].getNombreEstado().equals("Pendiente")) && ((resultado[i].getFecha_reserva().after(fecha)) || (resultado[i].getFecha_reserva().toString().equals(fecha.toString())))) {
                                    band = false;
                                    respuesta = respuesta + "<tr> ";
                                    respuesta = respuesta + "<td>" + resultado[i].getNombreSolicitante() + " " + resultado[i].getApellidoSolicitante() + "</td> ";
                                    respuesta = respuesta + "<td>" + resultado[i].getNombreRecurso() + "</td> ";
                                    respuesta = respuesta + "<td>" + resultado[i].getFecha_reserva().toString() + "</td> ";
                                    respuesta = respuesta + "<td>" + resultado[i].getHora_inicio().toString().substring(0, 5) + "</td> ";
                                    respuesta = respuesta + "<td>" + resultado[i].getHora_final().toString().substring(0, 5) + "</td> ";
                                    respuesta = respuesta + "<td>" + resultado[i].getNombreEstado() + "</td> ";
                                    respuesta = respuesta + "<th class=\"nada\"><a href=\"GestionarSolicitudes_de_Reserva?hacer=" + operacion + "&id=" + resultado[i].getId_solic_reserva() + "&NombreSolicitante=" + resultado[i].getNombreSolicitante() + " " + resultado[i].getApellidoSolicitante() + "\">" + link + "</a></th> ";
                                    respuesta = respuesta + "</tr> ";
                                }


                            }
                            respuesta = respuesta + "</tbody> ";
                            respuesta = respuesta + "</table> ";
                        }
                        if (band) {
                            respuesta = "<br><p><FONT FACE=\"arial\" SIZE=1 COLOR=red>No existen Solicitudes de Reservas pendientes ni que tengan una fecha mayor a la fecha actual de la opcion seleccionada....</FONT></p>";
                        }
                    } else {
                        respuesta = "<br><p><FONT FACE=\"arial\" SIZE=1 COLOR=red>No existen Solicitudes de Reservas de la opcion seleccionada....</FONT></p>";
                    }
                }
            }
            return respuesta;

        } catch (Solicitudes_reservasException ex) {
            return null;

        }
    }

    /**
     * Este metodo es utilizado para obtener la cabecera de la tabla construida en el metodo ListarSolicitudes.
     * @return Retorna una cadena que contiene la cabecera de la tabla.
     */
    protected String CabeceraTabla() {
        String respuesta = "";
        respuesta = respuesta + "<table border=\"0\"> ";
        respuesta = respuesta + "<tbody> ";
        respuesta = respuesta + "<tr> ";
        respuesta = respuesta + "<th class=\"top\"><center><b>Solicitante</b></center></th> ";
        respuesta = respuesta + "<th class=\"top\"><center><b>Recurso</b></center></th> ";
        respuesta = respuesta + "<th class=\"top\"><center><b>Fecha Reserva</b></center></th> ";
        respuesta = respuesta + "<th class=\"top\"><center><b>Inicio</b></center></th> ";
        respuesta = respuesta + "<th class=\"top\"><center><b>Fin</b></center></th> ";
        respuesta = respuesta + "<th class=\"top\"><center><b>Estado</b></center></th> ";
        respuesta = respuesta + "</tr>";
        return respuesta;
    }

    /**
     * Este metodo nos permite rechazar una determinada solicitud de registro. Lo que realiza es un update a la solicitud cambiando el
     * estado de la misma a "Rechazado". Del Request se obtiene el id de la solicitud que sera rechazada.
     * @param request
     * @param response
     * @return Retorna "true" si es que la solicitud fue rechazada y false en otro caso.
     * @throws javax.servlet.ServletException
     * @throws java.io.IOException
     */
    protected boolean RechazarSolicitud(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        try {
            int idSolicitud = Integer.parseInt(request.getParameter("id"));
            HttpSession session = request.getSession(false);
            if (session != null) {
                Connection cone;
                Usuarios user = (Usuarios) session.getAttribute("datosUser");
                cone = (Connection) session.getAttribute("conexion");
                if (cone != null) {
                    ManejadorSolicitudReserva manejadorReserva = new ManejadorSolicitudReserva(cone);
                    manejadorReserva.RechazarSolicitud(idSolicitud, user.getId_usuario());
                    return true;
                }
            }
            return false;
        } catch (Solicitudes_reservasException ex) {
            return false;
        }
    }

    /**
     * Este metodo nos permite anular una determinada solicitud de registro. Lo que realiza es un update a la solicitud cambiando el
     * estado de la misma a "Anulada". Del Request se obtiene el id de la solicitud que sera anulada.
     * @param request
     * @param response
     * @return Retorna "true" si es que la solicitud fue anulada y false en otro caso.
     * @throws javax.servlet.ServletException
     * @throws java.io.IOException
     */
    protected boolean AnularSolicitud(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        try {
            int idSolicitud = Integer.parseInt(request.getParameter("id"));
            HttpSession session = request.getSession(false);
            if (session != null) {
                Connection cone;
                Usuarios user = (Usuarios) session.getAttribute("datosUser");
                cone = (Connection) session.getAttribute("conexion");
                if (cone != null) {
                    ManejadorSolicitudReserva manejadorReserva = new ManejadorSolicitudReserva(cone);
                    manejadorReserva.AnularSolicitud(idSolicitud, user.getId_usuario());
                    return true;
                }
            }
            return false;
        } catch (Solicitudes_reservasException ex) {
            return false;
        }
    }
}

